package com.zjcloud.jwgl.mapper;

import java.util.List;
import com.zjcloud.jwgl.domain.AcAlgorithmParameterTemplate;

/**
 * 算法参数模板Mapper接口
 * 
 * @author zjcloud
 * @date 2024-12-19
 */
public interface AcAlgorithmParameterTemplateMapper 
{
    /**
     * 查询算法参数模板
     * 
     * @param id 算法参数模板主键
     * @return 算法参数模板
     */
    public AcAlgorithmParameterTemplate selectAcAlgorithmParameterTemplateById(Long id);

    /**
     * 查询算法参数模板列表
     * 
     * @param acAlgorithmParameterTemplate 算法参数模板
     * @return 算法参数模板集合
     */
    public List<AcAlgorithmParameterTemplate> selectAcAlgorithmParameterTemplateList(AcAlgorithmParameterTemplate acAlgorithmParameterTemplate);

    /**
     * 新增算法参数模板
     * 
     * @param acAlgorithmParameterTemplate 算法参数模板
     * @return 结果
     */
    public int insertAcAlgorithmParameterTemplate(AcAlgorithmParameterTemplate acAlgorithmParameterTemplate);

    /**
     * 修改算法参数模板
     * 
     * @param acAlgorithmParameterTemplate 算法参数模板
     * @return 结果
     */
    public int updateAcAlgorithmParameterTemplate(AcAlgorithmParameterTemplate acAlgorithmParameterTemplate);

    /**
     * 删除算法参数模板
     * 
     * @param id 算法参数模板主键
     * @return 结果
     */
    public int deleteAcAlgorithmParameterTemplateById(Long id);

    /**
     * 批量删除算法参数模板
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteAcAlgorithmParameterTemplateByIds(Long[] ids);

    /**
     * 根据模板编码查询算法参数模板
     * 
     * @param templateCode 模板编码
     * @return 算法参数模板
     */
    public AcAlgorithmParameterTemplate selectByTemplateCode(String templateCode);

    /**
     * 根据算法类型ID查询参数模板列表
     * 
     * @param algorithmTypeId 算法类型ID
     * @return 算法参数模板集合
     */
    public List<AcAlgorithmParameterTemplate> selectByAlgorithmTypeId(Long algorithmTypeId);

    /**
     * 查询默认参数模板列表
     * 
     * @return 算法参数模板集合
     */
    public List<AcAlgorithmParameterTemplate> selectDefaultTemplates();

    /**
     * 查询公开参数模板列表
     * 
     * @return 算法参数模板集合
     */
    public List<AcAlgorithmParameterTemplate> selectPublicTemplates();

    /**
     * 根据目标场景查询参数模板
     * 
     * @param targetScenario 目标场景
     * @return 算法参数模板集合
     */
    public List<AcAlgorithmParameterTemplate> selectByTargetScenario(String targetScenario);

    /**
     * 根据算法类型和目标场景查询参数模板
     * 
     * @param algorithmTypeId 算法类型ID
     * @param targetScenario 目标场景
     * @return 算法参数模板集合
     */
    public List<AcAlgorithmParameterTemplate> selectByAlgorithmTypeAndScenario(Long algorithmTypeId, String targetScenario);

    /**
     * 更新模板使用次数
     * 
     * @param id 模板ID
     * @return 结果
     */
    public int updateUsageCount(Long id);

    /**
     * 更新模板成功率和平均评分
     * 
     * @param acAlgorithmParameterTemplate 算法参数模板
     * @return 结果
     */
    public int updatePerformanceMetrics(AcAlgorithmParameterTemplate acAlgorithmParameterTemplate);
}